home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MATH.ARC / INTEGER BRICK (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  11.2 KB  |  259 lines

  1. 10 * = $0801
  2. 20 ;INTEGER BRICK
  3. 30 ;P
  4. 40 .S
  5. 50 .D BRICK
  6. 60 ;
  7. 70 TWOA = $3F
  8. 80 TWOB = $41
  9. 90 TWOC = $43
  10. 100 TOP = $45
  11. 110 CONV = $47
  12. 120 TOD = $DC08
  13. 130 CHROUT = $FFD2
  14. 140 ;
  15. 150 START .BYTE 11 8 0 0 158:.BYTE "2061":.BYTE 0 0 0
  16. 160 JMP INIT
  17. 170 ;
  18. 180 ADD LDY LENGTH:LDX #$00:CLC
  19. 190 ADD2 LDA AUGEND,X:ADC ADDEND,X:STA AUGEND,X:INX:DEY:BNE ADD2:BCC ADD3
  20. 200 LDA #$01:STA AUGEND,X:INX
  21. 210 ADD3 RTS
  22. 220 ;
  23. 230 SUBTRACT LDY LENGTH:LDX #$00:SEC
  24. 240 SUB2 LDA MINUEND,X:SBC SUBTRAHEND,X:STA MINUEND,X:INX:DEY:BNE SUB2
  25. 250 SUB3 DEX:BEQ SUB5; .A HOLDS RESULT OF LAST SBC
  26. 260 SUB4 ORA MINUEND,X:DEX:BNE SUB4
  27. 270 SUB5 ORA MINUEND,X:RTS
  28. 280 ;
  29. 290 ; MULTIPLY ADDEND,Y BY QUOTIENT,X
  30. 300 MULTIPLY STY LENGTH:STX SHIFT:LDA #$00:LDX #$08:STA COUNT
  31. 310 MULT2 STA AUGEND,X:DEX:BPL MULT2
  32. 320 MULT3 LDX SHIFT:DEX:CLC
  33. 330 MULT4 ROR QUOTIENT,X:DEX:BPL MULT4:BCC MULT5:JSR ADD:STX LENGTH:STX COUNT
  34. 340 MULT5 LDY LENGTH:LDX #$00:CLC
  35. 350 MULT6 ROL ADDEND,X:INX:DEY:BNE MULT6:BCC MULT7:ROL ADDEND,X:INC LENGTH
  36. 360 MULT7 LDA QUOTIENT,Y:BNE MULT3:INY:CPY SHIFT:BNE MULT7:LDA COUNT:RTS
  37. 370 ;
  38. 380 ; DIVIDE DIVIDEND,X BY SUBTRAHEND
  39. 390 DIVIDE STX LENGTH:TXA:ASL:ASL:ASL:STA SHIFT; ALL DIVIDEND BITS TO MINUEND
  40. 400 DVD2 LDX #$00:LDY LENGTH:CLC
  41. 410 DVD3 ROL DIVIDEND,X:INX:DEY:BNE DVD3:LDX #$00:LDY LENGTH
  42. 420 DVD4 ROL MINUEND,X:INX:DEY:BNE DVD4:LDY LENGTH:LDX #$00:SEC
  43. 430 DVD5 LDA MINUEND,X:SBC SUBTRAHEND,X:INX:DEY:BNE DVD5:BCC DVD6:JSR SUBTRACT
  44. 440 DVD6 LDX #$00:LDY LENGTH; ROL CARRY TO QUOTIENT, FLAG ZERO RMNDR WHEN DONE
  45. 450 DVD7 ROL QUOTIENT,X:INX:DEY:BNE DVD7:DEC SHIFT:BNE DVD2:LDA #$00:JMP SUB3
  46. 460 ;
  47. 470 ; SQUARE ROOT OF SQRO,X
  48. 480 SQR STX LENGTH:DEX; FIRST PUT THE SQUARE INTO THE WORK BUFFERS
  49. 490 SQR2 LDA SQRO,X:STA QUOTIENT,X:STA SQRT,X:DEX:BPL SQR2
  50. 500 LDA LENGTH:ASL:ASL:ASL; SET UP TO COUNT BITS--TOTAL NUMBER IN .A
  51. 510 SQR3 LDY LENGTH:LDX #$00:CLC; SBC CARRY FOR ZERO BITS, NO SQR FOR ZERO
  52. 520 SQR4 ROL QUOTIENT,X:INX:DEY:BNE SQR4:BCS SQR5:SBC #$00:BNE SQR3:RTS
  53. 530 SQR5 LSR:TAY:DEY; (SIGNIFICANT BITLENGTH/2)-1 NOW IN .Y
  54. 540 SQR6 LDX LENGTH:DEX:CLC; SHIFT BITS OFF TO THE RIGHT TO FORM APPROXIMATION
  55. 550 SQR7 ROR SQRT,X:DEX:BPL SQR7:DEY:BNE SQR6:LDA #$04:STA SQUARE
  56. 560 ; NEWTON'S:  DO 4X, SQRT(APPROXIMATION)=(SQRT^2+SQRO)/(2*SQRT)
  57. 570 SQR8 JSR CLEAR3:LDY LENGTH:LDX #$00:CLC
  58. 580 SQR9 LDA SQRT,X:STA ADDEND,X:STA QUOTIENT,X:ROL:STA SUBTRAHEND,X:INX:DEY
  59. 590 BNE SQR9:BCC SQR10:LDA #$01:STA SUBTRAHEND,X:INC LENGTH
  60. 600 SQR10 LDX LENGTH:TXA:TAY:JSR MULTIPLY:STA LENGTH:TAX:DEX
  61. 610 SQR11 LDA SQRO,X:STA ADDEND,X:DEX:BPL SQR11:JSR ADD:STX LENGTH:DEX
  62. 620 SQR12 LDA AUGEND,X:STA DIVIDEND,X:DEX:BPL SQR12
  63. 630 LDX LENGTH:JSR DIVIDE:LDX LENGTH:DEX
  64. 640 SQR13 LDA QUOTIENT,X:STA SQRT,X:DEX:BPL SQR13:DEC SQUARE:BNE SQR8
  65. 650 JSR CLEAR3:LDX LENGTH:DEX; CHECK ACCURACY OF RESULT, REPEAT IF ABOVE ROOT
  66. 660 SQR14 LDA SQRT,X:STA ADDEND,X:STA QUOTIENT,X:DEX:BPL SQR14
  67. 670 LDX LENGTH:TXA:TAY:JSR MULTIPLY:STA LENGTH:TAX:DEX
  68. 680 SQR15 LDA SQRO,X:STA MINUEND,X:LDA AUGEND,X:STA SUBTRAHEND,X:DEX:BPL SQR15
  69. 690 JSR SUBTRACT:BCS SQR16:LDA #$01:STA SQUARE:JMP SQR8
  70. 700 SQR16 RTS; WITH ZERO FLAG SET IF RESULT IS EXACT ROOT
  71. 710 ;
  72. 720 CLRSQR LDY #$11:LDA #$00; CLEAR SQRT AND SQRO
  73. 730 CLRSQR2 STA SQRT,Y:DEY:BPL CLRSQR2:RTS
  74. 740 ;
  75. 750 CLEAR LDX #$6B:.BYTE 44; CLEAR ALL BUFFERS EXCEPT G
  76. 760 CLEAR2 LDX #$50:.BYTE 44; CLEAR BELOW F
  77. 770 CLEAR3 LDX #$35:LDA #$00; CLEAR ALL MATH BUFFERS
  78. 780 CLEAR4 STA ADDEND,X:DEX:BPL CLEAR4:RTS
  79. 790 ;
  80. 800 DISPLAY STA CONV:STX CONV+1:STY LENGTH:LDY #$20:LDA #$00
  81. 810 DISP2 STA RORBUF,Y:DEY:BPL DISP2:LDY LENGTH:DEY
  82. 820 DISP3 LDA (CONV),Y:STA RORBUF,Y:DEY:BPL DISP3:LDA #$01:STA BCDBUF
  83. 830 DISP4 LDX LENGTH:DEX:CLC
  84. 840 DISP5 ROR RORBUF,X:DEX:BPL DISP5:BCC DISP7:LDY #$0B:LDX #$00:CLC:SED
  85. 850 DISP6 LDA RESULT,X:ADC BCDBUF,X:STA RESULT,X:INX:DEY:BNE DISP6
  86. 860 DISP7 LDY #$0B:LDX #$00:CLC:SED
  87. 870 DISP8 LDA BCDBUF,X:ADC BCDBUF,X:STA BCDBUF,X:INX:DEY:BNE DISP8:CLD
  88. 880 DISP9 LDA RORBUF,Y:BNE DISP4:INY:CPY LENGTH:BNE DISP9:LDX #$0B
  89. 890 DISP10 DEX:BEQ DISP11:LDA RESULT,X:BEQ DISP10
  90. 900 DISP11 LDA RESULT,X:PHA:LSR:LSR:LSR:LSR:BEQ DISP12:ORA #$30:JSR CHROUT
  91. 910 DISP12 PLA:AND #$0F:ORA #$30:JSR CHROUT:DEX:BMI DISP14
  92. 920 DISP13 LDA RESULT,X:PHA:LSR:LSR:LSR:LSR:ORA #$30:JSR CHROUT
  93. 930 PLA:AND #$0F:ORA #$30:JSR CHROUT:DEX:BPL DISP13
  94. 940 DISP14 RTS
  95. 950 ;
  96. 960 TIME LDY #$03
  97. 970 TIM2 LDA TOD,Y:AND #$7F:PHA:LSR:LSR:LSR:LSR:ORA #$30:JSR CHROUT:PLA
  98. 980 AND #$0F:ORA #$30:JSR CHROUT:CPY #$02:BCC TIM3:LDA #$3A:.BYTE 44
  99. 990 TIM3 LDA #$2E:JSR CHROUT:DEY:BNE TIM2:LDA TOD:AND #$0F:ORA #$30:JMP CHROUT
  100. 1000 ;
  101. 1010 INIT LDA #$0B:STA $D020:STA $D021:LDA #$9F:JSR CHROUT
  102. 1020 LDA TOD+7:AND #$7F:STA TOD+7:LDY #$04:LDA #$00
  103. 1030 INIT2 STA TOD,Y:DEY:BPL INIT2
  104. 1040 ;
  105. 1050 NEWG LDA #$93:JSR CHROUT:LDA #$11:JSR CHROUT:JSR CLEAR:JSR CLRSQR
  106. 1060 LDX #$01:STX TWO:DEX:STX TWOCT:STX TWOCT+1
  107. 1070 LDA #<TABLE:STA TWOA:LDA #>TABLE:STA TWOA+1:LDX #$00
  108. 1080 NEWG2 INC G,X:BNE NEWG3:INX:CPX #$04:BCC NEWG2:RTS
  109. 1090 NEWG3 LDY #$04
  110. 1100 NEWG4 DEY:LDA G,Y:BEQ NEWG4
  111. 1110 INY:STY GY:LDA #<G:LDX #>G:JSR DISPLAY:LDA #$20:JSR CHROUT:LDX GY:DEX
  112. 1120 NEWG5 LDA G,X:STA ADDEND,X:STA QUOTIENT,X:DEX:BPL NEWG5
  113. 1130 LDX GY:TXA:TAY:JSR MULTIPLY:STA GXY:TAX:DEX
  114. 1140 NEWG6 LDA AUGEND,X:STA G2,X:DEX:BPL NEWG6
  115. 1150 JSR CLEAR3:LDX GXY:STX LENGTH:DEX
  116. 1160 ;
  117. 1170 FLOW LDA G2,X:STA AUGEND,X:STA ADDEND,X:DEX:BPL FLOW:JSR ADD:STX LENGTH
  118. 1180 TXA:PHA:DEX; AUGEND NOW 2*G^2
  119. 1190 FLOW2 LDA AUGEND,X:STA DIVIDEND,X:DEX:BPL FLOW2:LDA #$03:STA SUBTRAHEND
  120. 1200 PLA:TAX:JSR DIVIDE:JSR CLRSQR:LDX LENGTH:DEX; NEED SQR OF 2*G^2/3
  121. 1210 FLOW3 LDA QUOTIENT,X:STA SQRO,X:DEX:BPL FLOW3:LDX LENGTH:JSR SQR
  122. 1220 LDX LENGTH:DEX
  123. 1230 FLOW4 LDA SQRT,X:STA FL,X:LDA G,X:STA F,X:DEX:BPL FLOW4
  124. 1240 LDY GY:LDA #<FL:LDX #>FL:JSR DISPLAY:LDA #$20:JSR CHROUT
  125. 1250 JSR TIME:LDA #$0D:JSR CHROUT
  126. 1260 ;
  127. 1270 NEWF SEC:LDA F:SBC #$01:STA F:BCS NEWF2:LDA F+1:SBC #$00:STA F+1:BCS NEWF2
  128. 1280 LDA F+2:SBC #$00:STA F+2:BCS NEWF2:LDA F+3:SBC #$00:STA F+3
  129. 1290 NEWF2 JSR CLEAR2:LDY GY:LDX #$00:SEC
  130. 1300 NEWF3 LDA F,X:SBC FL,X:INX:DEY:BNE NEWF3:BCS NEWF4
  131. 1310 ;
  132. 1320 SEC:LDA TWOCT:SBC TWO:BCS DOTWOS:LDA TWOCT+1:BNE DOTWOS:JMP NEWG
  133. 1330 DOTWOS JMP TWOS
  134. 1340 ;
  135. 1350 NEWF4 LDY GY:LDA #<F:LDX #>F:JSR DISPLAY:LDA #$20:JSR CHROUT:LDX GY:DEX
  136. 1360 NEWF5 LDA F,X:STA ADDEND,X:STA QUOTIENT,X:DEX:BPL NEWF5
  137. 1370 LDX GY:TXA:TAY:JSR MULTIPLY:TAX:DEX
  138. 1380 NEWF6 LDA AUGEND,X:STA F2,X:DEX:BPL NEWF6
  139. 1390 JSR CLEAR3:JSR CLRSQR:LDY GXY:LDX #$00:SEC; TEST SQRT OF A^2=G^2-F^2
  140. 1400 ;
  141. 1410 NEWA LDA G2,X:SBC F2,X:STA SQRO,X:INX:DEY:BNE NEWA
  142. 1420 LDX GXY:JSR SQR:PHP:LDY GY:LDA #<SQRT:LDX #>SQRT:JSR DISPLAY
  143. 1430 LDA #$20:JSR CHROUT:LDA #$0D:JSR CHROUT:LDA #$91:JSR CHROUT
  144. 1440 PLP:BEQ NEWAF:JMP NEWF; IF NOT PERFECT SQUARE, DO NEXT F
  145. 1450 ;
  146. 1460 NEWAF LDX GXY:DEX
  147. 1470 NEWAF2 LDA SQRO,X:STA A2,X:LDA SQRT,X:STA A,X:DEX:BPL NEWAF2
  148. 1480 LDA #$02:CMP TWO:BEQ NEWFL4:BCS NEWFL:JMP NEWAF3
  149. 1490 ;
  150. 1500 NEWFL STA TWO:JSR CLEAR3:JSR CLRSQR:LDX GXY:STX LENGTH:DEX:CLC
  151. 1510 NEWFL2 LDA G2,X:STA MINUEND,X:LDA F2,X:ROR:STA SUBTRAHEND,X
  152. 1520 DEX:BPL NEWFL2:JSR SUBTRACT:LDX GXY:DEX
  153. 1530 NEWFL3 LDA MINUEND,X:STA SQRO,X:DEX:BPL NEWFL3:BMI NEWFL6
  154. 1540 NEWFL4 JSR CLEAR3:JSR CLRSQR:LDX GXY:DEX:CLC; 3RD FLOW = SQR(G2/2)
  155. 1550 NEWFL5 LDA G2,X:ROR:STA SQRO,X:DEX:BPL NEWFL5:INC TWO
  156. 1560 NEWFL6 LDX GXY:JSR SQR:LDX GY:DEX
  157. 1570 NEWFL7 LDA SQRT,X:STA FL,X:DEX:BPL NEWFL7:LDA #$0D:JSR CHROUT:LDA #$1E
  158. 1580 JSR CHROUT:LDY GY:LDA #<G:LDX #>G:JSR DISPLAY:LDA #$20:JSR CHROUT
  159. 1590 LDY GY:LDA #<FL:LDX #>FL:JSR DISPLAY:LDA #$20:JSR CHROUT
  160. 1600 LDA #$20:JSR CHROUT:LDA #$9F:JSR CHROUT
  161. 1610 ;
  162. 1620 NEWAF3 LDY #$00:LDA GY:STA (TWOA),Y:TAX:TAY:DEX
  163. 1630 NEWAF4 LDA A,X:STA (TWOA),Y:DEX:DEY:BNE NEWAF4:CLC
  164. 1640 LDA TWOA:ADC GY:STA TWOA:BCC NEWAF5:INC TWOA+1
  165. 1650 NEWAF5 INC TWOA:BNE NEWAF6:INC TWOA+1
  166. 1660 NEWAF6 LDY #$00:LDA GY:STA (TWOA),Y:TAX:TAY:DEX
  167. 1670 NEWAF7 LDA F,X:STA (TWOA),Y:DEX:DEY:BNE NEWAF7:CLC
  168. 1680 LDA TWOA:ADC GY:STA TWOA:STA TOP:LDA TWOA+1:ADC #$00:STA TWOA+1:STA TOP+1
  169. 1690 INC TWOA:INC TOP:BNE NEWAF8:INC TWOA+1:INC TOP+1
  170. 1700 NEWAF8 INC TWOCT:BNE NEWAF9:INC TWOCT+1
  171. 1710 NEWAF9 LDA #$0D:JSR CHROUT:JMP NEWF
  172. 1720 ;
  173. 1730 TWOS LDA #<TABLE:STA TWOA:LDA #>TABLE:STA TWOA+1:JMP NEW2A2
  174. 1740 ;
  175. 1750 NEW2C LDY #$00:LDA (TWOC),Y:STA COUNT:INC COUNT:CLC
  176. 1760 LDA TWOC:ADC COUNT:STA TWOC:BCC NEW2C2:INC TWOC+1
  177. 1770 NEW2C2 SEC:LDA TWOC:SBC TOP:LDA TWOC+1:SBC TOP+1:BCS NEW2B:JMP TWOS2
  178. 1780 ;
  179. 1790 NEW2B LDY #$00:LDA (TWOB),Y:ASL:STA COUNT:INC COUNT:INC COUNT:CLC
  180. 1800 LDA TWOB:ADC COUNT:STA TWOB:LDA TWOB+1:ADC #$00:STA TWOB+1
  181. 1810 LDA TWOB:SEC:SBC TOP:LDA TWOB+1:SBC TOP+1:BCS NEW2A
  182. 1820 NEW2B2 LDY #$00:LDA (TWOB),Y:STA COUNT:INC COUNT:CLC
  183. 1830 LDA TWOB:ADC COUNT:STA TWOC:LDA TWOB+1:ADC #$00:STA TWOC+1:BNE NEW2C
  184. 1840 ;
  185. 1850 NEW2A LDY #$00:LDA (TWOA),Y:ASL:STA COUNT:INC COUNT:INC COUNT:CLC
  186. 1860 LDA TWOA:ADC COUNT:STA TWOA:LDA TWOA+1:ADC #$00:STA TWOA+1
  187. 1870 LDA TWOA:SEC:SBC TOP:LDA TWOA+1:SBC TOP+1:BCC NEW2A2:JMP NEWG
  188. 1880 NEW2A2 LDA TWOA:STA TWOB:LDA TWOA+1:STA TWOB+1:BNE NEW2B
  189. 1890 ;
  190. 1900 TWOS2 JSR CLEAR3:LDY #$08:LDA #$00; USE A2 FOR TEMP A, A FOR TEMP A2
  191. 1910 TWOS3 STA A,Y:DEY:BPL TWOS3:INY:LDA (TWOA),Y:TAY:TAX:DEX
  192. 1920 TWOS4 LDA (TWOA),Y:STA ADDEND,X:STA QUOTIENT,X:STA A2,X:DEX:DEY:BNE TWOS4
  193. 1930 LDA #$9F:JSR CHROUT:LDY GY:LDA #<ADDEND:LDX #>ADDEND:JSR DISPLAY
  194. 1940 LDA #$20:JSR CHROUT:LDY #$00:LDA (TWOA),Y:TAY:TAX:JSR MULTIPLY:TAX:DEX
  195. 1950 TWOS5 LDA AUGEND,X:STA A,X:DEX:BPL TWOS5:JSR CLEAR3
  196. 1960 LDY #$00:LDA (TWOB),Y:TAY:TAX:DEX; USE F2 FOR TEMP B, A FOR A2+B2
  197. 1970 TWOS6 LDA (TWOB),Y:STA ADDEND,X:STA QUOTIENT,X:STA F2,X:DEX:DEY:BNE TWOS6
  198. 1980 LDA #$1E:JSR CHROUT:LDY GY:LDA #<ADDEND:LDX #>ADDEND:JSR DISPLAY:LDA #$20
  199. 1990 JSR CHROUT:LDY #$00:LDA (TWOB),Y:TAY:TAX:JSR MULTIPLY:TAY:LDX #$00:CLC
  200. 2000 TWOS7 LDA AUGEND,X:ADC A,X:STA A,X:INX:DEY:BNE TWOS7:JSR CLEAR3
  201. 2010 LDY #$00:LDA (TWOC),Y:TAY:TAX:DEX; USE SQRT FOR TEMP C
  202. 2020 TWOS8 LDA (TWOC),Y:STA ADDEND,X:STA QUOTIENT,X:STA SQRT,X:DEX:DEY:BNE TWOS8
  203. 2030 LDA #$9E:JSR CHROUT:LDY GY:LDA #<ADDEND:LDX #>ADDEND:JSR DISPLAY
  204. 2040 LDA #$20:JSR CHROUT; NOW PUT A2+B2+C2 IN MINUEND, PRESERVING A2+B2 IN A
  205. 2050 LDY #$00:LDA (TWOC),Y:TAY:TAX:JSR MULTIPLY:TAY:LDX #$00:CLC
  206. 2060 TWOS9 LDA AUGEND,X:ADC A,X:STA MINUEND,X:INX:DEY:BNE TWOS9
  207. 2070 LDX GXY:STX LENGTH:DEX; TEST A2+B2+C2-G2=0 FOR THIS SMALLER C
  208. 2080 TWOS10 LDA G2,X:STA SUBTRAHEND,X:DEX:BPL TWOS10
  209. 2090 JSR SUBTRACT:BNE TWOS11:JMP OKAY
  210. 2100 TWOS11 JSR CLEAR3:LDY #$00:LDA (TWOC),Y:STA COUNT:INC COUNT:CLC
  211. 2110 LDA TWOC:ADC COUNT:STA TWOC:BCC TWOS12:INC TWOC+1
  212. 2120 TWOS12 LDY #$00:LDA (TWOC),Y:TAY:TAX:DEX; USE SQRT AGAIN FOR TEMP C
  213. 2130 TWOS13 LDA (TWOC),Y:STA ADDEND,X:STA QUOTIENT,X:STA SQRT,X:DEX:DEY
  214. 2140 BNE TWOS13:LDA #$96:JSR CHROUT:LDY GY:LDA #<ADDEND:LDX #>ADDEND
  215. 2150 JSR DISPLAY:LDA #$0D:JSR CHROUT:LDA #$9F:JSR CHROUT
  216. 2160 LDY #$00:LDA (TWOC),Y:TAY:TAX:JSR MULTIPLY:TAY:LDX #$00:CLC
  217. 2170 TWOS14 LDA AUGEND,X:ADC A,X:STA MINUEND,X:INX:DEY:BNE TWOS14
  218. 2180 LDX GXY:STX LENGTH:DEX; TEST A2+B2+C2-G2=0 FOR THIS LARGER C
  219. 2190 TWOS15 LDA G2,X:STA SUBTRAHEND,X:DEX:BPL TWOS15
  220. 2200 JSR SUBTRACT:BNE TWOS16:JMP OKAY
  221. 2210 TWOS16 JMP NEW2C
  222. 2220 ;
  223. 2230 OKAY LDA #$0D:JSR CHROUT:LDA #$91:JSR CHROUT:LDA #$96:JSR CHROUT
  224. 2240 LDY GY:LDA #<A2:LDX #>A2:JSR DISPLAY:LDA #$20:JSR CHROUT; DISPLAY A
  225. 2250 LDY GY:LDA #<F2:LDX #>F2:JSR DISPLAY:LDA #$20:JSR CHROUT; DISPLAY B
  226. 2260 LDY GY:LDA #<SQRT:LDX #>SQRT:JSR DISPLAY:LDA #$20:JSR CHROUT; DISPLAY C
  227. 2270 LDY GY:LDA #<G:LDX #>G:JSR DISPLAY:LDA #$0D:JSR CHROUT; DISPLAY G
  228. 2280 LDA #$9F:JMP CHROUT; EXIT THROUGH CHROUT TO BASIC AND QUIT
  229. 2290 ;
  230. 2300 RORBUF .BYTE 0 0 0 0 0 0 0 0 0 0 0
  231. 2310 BCDBUF .BYTE 0 0 0 0 0 0 0 0 0 0 0
  232. 2320 RESULT .BYTE 0 0 0 0 0 0 0 0 0 0 0
  233. 2330 ADDEND .BYTE 0 0 0 0 0 0 0 0 0
  234. 2340 AUGEND .BYTE 0 0 0 0 0 0 0 0 0
  235. 2350 SUBTRAHEND .BYTE 0 0 0 0 0 0 0 0 0
  236. 2360 MINUEND .BYTE 0 0 0 0 0 0 0 0 0
  237. 2370 QUOTIENT .BYTE 0 0 0 0 0 0 0 0 0
  238. 2380 DIVIDEND .BYTE 0 0 0 0 0 0 0 0 0; $35=CLEAR3
  239. 2390 A .BYTE 0 0 0 0 0 0 0 0 0
  240. 2400 A2 .BYTE 0 0 0 0 0 0 0 0 0
  241. 2410 F2 .BYTE 0 0 0 0 0 0 0 0 0; $50=CLEAR2
  242. 2420 F .BYTE 0 0 0 0 0 0 0 0 0
  243. 2430 FL .BYTE 0 0 0 0 0 0 0 0 0
  244. 2440 G2 .BYTE 0 0 0 0 0 0 0 0 0; $6B=CLEAR
  245. 2450 G .BYTE 64 0 0 0 0 0 0 0 0; LOAD PRIOR TO RUN
  246. 2460 SQRT .BYTE 0 0 0 0 0 0 0 0 0
  247. 2470 SQRO .BYTE 0 0 0 0 0 0 0 0 0
  248. 2480 TWO .BYTE 0
  249. 2490 TWOCT .BYTE 0 0
  250. 2500 GXY .BYTE 0
  251. 2510 GY .BYTE 0
  252. 2520 LENGTH .BYTE 0
  253. 2530 COUNT .BYTE 0
  254. 2540 SHIFT .BYTE 0
  255. 2550 SQUARE .BYTE 0
  256. 2560 TABLE .BYTE 0 0 0
  257. 2570 ;
  258. 2580 .END INTEGER BRICK
  259.